1   /*
2    * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  /*
27   */
28  
29  /*
30   *  (C) Copyright IBM Corp. 1999 All Rights Reserved.
31   */
32  
33  /*
34   * Since JDK 1.5.0, this file no longer goes to runtime and is used at J2SE
35   * build phase in order to create [Word|Line]BreakIteratorData_th files which
36   * are used on runtime instead.
37   */
38  
39  package sun.text.resources;
40  
41  import java.util.ListResourceBundle;
42  import java.util.MissingResourceException;
43  import java.net.URL;
44  
45  public class BreakIteratorRules_th extends ListResourceBundle {
46      protected final Object[][] getContents() {
47          return new Object[][] {
48              { "WordBreakRules",
49                // this rule breaks the iterator with mixed Thai and English
50                  "<dictionary>=[\u0e01-\u0e2e\u0e30-\u0e3a\u0e40-\u0e44\u0e47-\u0e4e];"
51  
52                  + "<ignore>=[:Mn::Me::Cf:^<dictionary>];"
53                  + "<paiyannoi>=[\u0e2f];"
54                  + "<maiyamok>=[\u0e46];"
55                  + "<danda>=[\u0964\u0965];"
56                  + "<kanji>=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
57                  + "<kata>=[\u30a1-\u30fa];"
58                  + "<hira>=[\u3041-\u3094];"
59                  + "<cjk-diacrit>=[\u3099-\u309c];"
60                  + "<let>=[:L::Mc:^[<kanji><kata><hira><cjk-diacrit><dictionary>]];"
61                  + "<dgt>=[:N:];"
62                  + "<mid-word>=[:Pd:\u00ad\u2027\\\"\\\'\\.];"
63                  + "<mid-num>=[\\\"\\\'\\,\u066b\\.];"
64                  + "<pre-num>=[:Sc:\\#\\.^\u00a2];"
65                  + "<post-num>=[\\%\\&\u00a2\u066a\u2030\u2031];"
66                  + "<ls>=[\n\u000c\u2028\u2029];"
67                  + "<ws>=[:Zs:\t];"
68                  + "<word>=((<let><let>*(<mid-word><let><let>*)*){<danda>});"
69                  + "<number>=(<dgt><dgt>*(<mid-num><dgt><dgt>*)*);"
70                  + "<thai-etc>=<paiyannoi>\u0e25<paiyannoi>;"
71                  + ".;"
72                  + "{<word>}(<number><word>)*{<number>{<post-num>}};"
73                  + "<pre-num>(<number><word>)*{<number>{<post-num>}};"
74                  + "<dictionary><dictionary>*{{<paiyannoi>}<maiyamok>};"
75                  + "<dictionary><dictionary>*<paiyannoi>/([^[\u0e25<ignore>]]"
76                          + "|\u0e25[^[<paiyannoi><ignore>]]);"
77                  + "<thai-etc>;"
78                  + "<ws>*{\r}{<ls>};"
79                  + "[<kata><cjk-diacrit>]*;"
80                  + "[<hira><cjk-diacrit>]*;"
81                  + "<kanji>*;"
82              },
83  
84              { "LineBreakRules",
85                  "<dictionary>=[\u0e01-\u0e2e\u0e30-\u0e3a\u0e40-\u0e44\u0e47-\u0e4e];" // this rule breaks the iterator with mixed Thai and English
86                  + "<ignore>=[:Mn::Me::Cf:^[<dictionary>]];"
87                  + "<danda>=[\u0964\u0965];"
88                  + "<break>=[\u0003\t\n\f\u2028\u2029];"
89                  + "<nbsp>=[\u00a0\u0f0c\u2007\u2011\u202f\ufeff];"
90                  + "<space>=[:Zs::Cc:^[<nbsp><break>\r]];"
91                  + "<dash>=[:Pd:\u00ad^<nbsp>];"
92                  + "<paiyannoi>=[\u0e2f];"
93                  + "<maiyamok>=[\u0e46];"
94                  + "<thai-etc>=(<paiyannoi>\u0e25<paiyannoi>);"
95                  + "<pre-word>=[:Sc::Ps::Pi:^\u00a2\\\"];"
96                  + "<post-word>=[:Pe::Pf:\\!\\%\\.\\,\\:\\;\\?\\\"\u00a2\u00b0\u066a\u2030-\u2034\u2103"
97                          + "\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
98                          + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
99                          + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0e"
100                         + "\uff1f<maiyamok>];"
101                 + "<kanji>=[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa^[<post-word><ignore>]];"
102                 + "<digit>=[:Nd::No:];"
103                 + "<mid-num>=[\\.\\,];"
104                 + "<char>=[^[<break><space><dash><kanji><nbsp><ignore><pre-word><post-word>"
105                         + "<mid-num>\r<danda><dictionary><paiyannoi><maiyamok>]];"
106                 + "<number>=([<pre-word><dash>]*<digit><digit>*(<mid-num><digit><digit>*)*);"
107                 + "<word-core>=(<char>*|<kanji>|<number>|<dictionary><dictionary>*|<thai-etc>);"
108                 + "<word-suffix>=((<dash><dash>*|<post-word>*)<space>*);"
109                 + "<word>=(<pre-word>*<word-core><word-suffix>);"
110                 + "<word>(<nbsp><nbsp>*<word>)*{({\r}{<break>}|<paiyannoi>\r{break}|<paiyannoi><break>)};"
111                 + "<word>(<nbsp><nbsp>*<word>)*<paiyannoi>/([^[\u0e25<ignore>]]|"
112                         + "\u0e25[^[<paiyannoi><ignore>]]);"
113             }
114         };
115     }
116 }